//
//  FSLPerson+Test.m
//  06-关联对象
//
//  Created by 我演示 on 2020/8/8.
//  Copyright © 2020 Jerry-Fu. All rights reserved.
//

#import "FSLPerson+Test.h"

#import <AppKit/AppKit.h>

/**注意：应该是需要值
 进行传递的
 
 需要保证值是唯一的，
 存储一个自己的地址值操作
  
 5:可以添加stattic 相当于只是在这个文件内部进行调用
 
 6:需要拿到 对应的地址值类型
 
 
 */
//static const void *MJNameKey  =  &MJNameKey ;
static const char  MJNameKey  ;  //第二种替换方案



@implementation FSLPerson (Test)



-(void)setName:(NSString *)name {
    
/**信息注释
 第一个参数： class 对象
 void 传递一个指针
 value name 的传递
 key: 有很多写法，
 
 类似于隐藏类型的参数
 
 */
//    objc_setAssociatedObject(self , MJNameKey   , name , OBJC_ASSOCIATION_COPY_NONATOMIC);
    
//
    objc_setAssociatedObject(self  , @selector(name ), name , OBJC_ASSOCIATION_COPY_NONATOMIC);
    
}

-(NSString *)name {
    
//    return  objc_getAssociatedObject(self , MJNameKey);
    return  objc_getAssociatedObject(self , @selector(name)); //第二种解决方案
    
//    Sel的对象y和上面这个是一样的，地址是相同的
//
}

@end
